/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mrp.persistencia.controller;

import java.io.Serializable;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import mrp.persistencia.entity.Desgloseproyeccionlineaproduccion;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.transaction.UserTransaction;
import mrp.beans.util.EntityManagerUtil;
import mrp.persistencia.controller.exceptions.IllegalOrphanException;
import mrp.persistencia.controller.exceptions.NonexistentEntityException;
import mrp.persistencia.controller.exceptions.PreexistingEntityException;
import mrp.persistencia.controller.exceptions.RollbackFailureException;
import mrp.persistencia.entity.*;

/**
 *
 * @author root
 */
public class LineaproduccionJpaController implements Serializable {

    public LineaproduccionJpaController() {
        
        this.emf = EntityManagerUtil.getEntityManagerFactory();
    }

    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }


    public void create(Lineaproduccion lineaproduccion) throws PreexistingEntityException, RollbackFailureException, Exception {
        if (lineaproduccion.getDesgloseproyeccionlineaproduccionList() == null) {
            lineaproduccion.setDesgloseproyeccionlineaproduccionList(new ArrayList<Desgloseproyeccionlineaproduccion>());
        }
        if (lineaproduccion.getPlanmaestroproduccionList() == null) {
            lineaproduccion.setPlanmaestroproduccionList(new ArrayList<Planmaestroproduccion>());
        }
        if (lineaproduccion.getProcesoList() == null) {
            lineaproduccion.setProcesoList(new ArrayList<Proceso>());
        }
        if (lineaproduccion.getModelocalzadoList() == null) {
            lineaproduccion.setModelocalzadoList(new ArrayList<Modelocalzado>());
        }
        EntityManager em = null;
        try {
            
            em = getEntityManager();
            em.getTransaction().begin();
            List<Desgloseproyeccionlineaproduccion> attachedDesgloseproyeccionlineaproduccionList = new ArrayList<Desgloseproyeccionlineaproduccion>();
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccionToAttach : lineaproduccion.getDesgloseproyeccionlineaproduccionList()) {
                desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccionToAttach = em.getReference(desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccionToAttach.getClass(), desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccionToAttach.getCoddesgloselineaproduccion());
                attachedDesgloseproyeccionlineaproduccionList.add(desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccionToAttach);
            }
            lineaproduccion.setDesgloseproyeccionlineaproduccionList(attachedDesgloseproyeccionlineaproduccionList);
            List<Planmaestroproduccion> attachedPlanmaestroproduccionList = new ArrayList<Planmaestroproduccion>();
            for (Planmaestroproduccion planmaestroproduccionListPlanmaestroproduccionToAttach : lineaproduccion.getPlanmaestroproduccionList()) {
                planmaestroproduccionListPlanmaestroproduccionToAttach = em.getReference(planmaestroproduccionListPlanmaestroproduccionToAttach.getClass(), planmaestroproduccionListPlanmaestroproduccionToAttach.getNumeroingreso());
                attachedPlanmaestroproduccionList.add(planmaestroproduccionListPlanmaestroproduccionToAttach);
            }
            lineaproduccion.setPlanmaestroproduccionList(attachedPlanmaestroproduccionList);
            List<Proceso> attachedProcesoList = new ArrayList<Proceso>();
            for (Proceso procesoListProcesoToAttach : lineaproduccion.getProcesoList()) {
                procesoListProcesoToAttach = em.getReference(procesoListProcesoToAttach.getClass(), procesoListProcesoToAttach.getCodproceso());
                attachedProcesoList.add(procesoListProcesoToAttach);
            }
            lineaproduccion.setProcesoList(attachedProcesoList);
            List<Modelocalzado> attachedModelocalzadoList = new ArrayList<Modelocalzado>();
            for (Modelocalzado modelocalzadoListModelocalzadoToAttach : lineaproduccion.getModelocalzadoList()) {
                modelocalzadoListModelocalzadoToAttach = em.getReference(modelocalzadoListModelocalzadoToAttach.getClass(), modelocalzadoListModelocalzadoToAttach.getCodestructuramateria());
                attachedModelocalzadoList.add(modelocalzadoListModelocalzadoToAttach);
            }
            lineaproduccion.setModelocalzadoList(attachedModelocalzadoList);
            em.persist(lineaproduccion);
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion : lineaproduccion.getDesgloseproyeccionlineaproduccionList()) {
                Lineaproduccion oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion = desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion.getLineaproduccionFk();
                desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion.setLineaproduccionFk(lineaproduccion);
                desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion = em.merge(desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion);
                if (oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion != null) {
                    oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion.getDesgloseproyeccionlineaproduccionList().remove(desgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion);
                    oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion = em.merge(oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListDesgloseproyeccionlineaproduccion);
                }
            }
            for (Planmaestroproduccion planmaestroproduccionListPlanmaestroproduccion : lineaproduccion.getPlanmaestroproduccionList()) {
                Lineaproduccion oldLineaproduccionFkOfPlanmaestroproduccionListPlanmaestroproduccion = planmaestroproduccionListPlanmaestroproduccion.getLineaproduccionFk();
                planmaestroproduccionListPlanmaestroproduccion.setLineaproduccionFk(lineaproduccion);
                planmaestroproduccionListPlanmaestroproduccion = em.merge(planmaestroproduccionListPlanmaestroproduccion);
                if (oldLineaproduccionFkOfPlanmaestroproduccionListPlanmaestroproduccion != null) {
                    oldLineaproduccionFkOfPlanmaestroproduccionListPlanmaestroproduccion.getPlanmaestroproduccionList().remove(planmaestroproduccionListPlanmaestroproduccion);
                    oldLineaproduccionFkOfPlanmaestroproduccionListPlanmaestroproduccion = em.merge(oldLineaproduccionFkOfPlanmaestroproduccionListPlanmaestroproduccion);
                }
            }
            for (Proceso procesoListProceso : lineaproduccion.getProcesoList()) {
                Lineaproduccion oldLineaproduccionFkOfProcesoListProceso = procesoListProceso.getLineaproduccionFk();
                procesoListProceso.setLineaproduccionFk(lineaproduccion);
                procesoListProceso = em.merge(procesoListProceso);
                if (oldLineaproduccionFkOfProcesoListProceso != null) {
                    oldLineaproduccionFkOfProcesoListProceso.getProcesoList().remove(procesoListProceso);
                    oldLineaproduccionFkOfProcesoListProceso = em.merge(oldLineaproduccionFkOfProcesoListProceso);
                }
            }
            for (Modelocalzado modelocalzadoListModelocalzado : lineaproduccion.getModelocalzadoList()) {
                Lineaproduccion oldLineaproduccionFkOfModelocalzadoListModelocalzado = modelocalzadoListModelocalzado.getLineaproduccionFk();
                modelocalzadoListModelocalzado.setLineaproduccionFk(lineaproduccion);
                modelocalzadoListModelocalzado = em.merge(modelocalzadoListModelocalzado);
                if (oldLineaproduccionFkOfModelocalzadoListModelocalzado != null) {
                    oldLineaproduccionFkOfModelocalzadoListModelocalzado.getModelocalzadoList().remove(modelocalzadoListModelocalzado);
                    oldLineaproduccionFkOfModelocalzadoListModelocalzado = em.merge(oldLineaproduccionFkOfModelocalzadoListModelocalzado);
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            try {
                em.getTransaction().rollback();
            } catch (Exception re) {
                throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
            }
            if (findLineaproduccion(lineaproduccion.getNumerolineaproduccion()) != null) {
                throw new PreexistingEntityException("Lineaproduccion " + lineaproduccion + " already exists.", ex);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(Lineaproduccion lineaproduccion) throws IllegalOrphanException, NonexistentEntityException, RollbackFailureException, Exception {
        EntityManager em = null;
        try {
            
            em = getEntityManager();
            em.getTransaction().begin();
            Lineaproduccion persistentLineaproduccion = em.find(Lineaproduccion.class, lineaproduccion.getNumerolineaproduccion());
            List<Desgloseproyeccionlineaproduccion> desgloseproyeccionlineaproduccionListOld = persistentLineaproduccion.getDesgloseproyeccionlineaproduccionList();
            List<Desgloseproyeccionlineaproduccion> desgloseproyeccionlineaproduccionListNew = lineaproduccion.getDesgloseproyeccionlineaproduccionList();
            List<Planmaestroproduccion> planmaestroproduccionListOld = persistentLineaproduccion.getPlanmaestroproduccionList();
            List<Planmaestroproduccion> planmaestroproduccionListNew = lineaproduccion.getPlanmaestroproduccionList();
            List<Proceso> procesoListOld = persistentLineaproduccion.getProcesoList();
            List<Proceso> procesoListNew = lineaproduccion.getProcesoList();
            List<Modelocalzado> modelocalzadoListOld = persistentLineaproduccion.getModelocalzadoList();
            List<Modelocalzado> modelocalzadoListNew = lineaproduccion.getModelocalzadoList();
            List<String> illegalOrphanMessages = null;
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListOldDesgloseproyeccionlineaproduccion : desgloseproyeccionlineaproduccionListOld) {
                if (!desgloseproyeccionlineaproduccionListNew.contains(desgloseproyeccionlineaproduccionListOldDesgloseproyeccionlineaproduccion)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Desgloseproyeccionlineaproduccion " + desgloseproyeccionlineaproduccionListOldDesgloseproyeccionlineaproduccion + " since its lineaproduccionFk field is not nullable.");
                }
            }
            for (Planmaestroproduccion planmaestroproduccionListOldPlanmaestroproduccion : planmaestroproduccionListOld) {
                if (!planmaestroproduccionListNew.contains(planmaestroproduccionListOldPlanmaestroproduccion)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Planmaestroproduccion " + planmaestroproduccionListOldPlanmaestroproduccion + " since its lineaproduccionFk field is not nullable.");
                }
            }
            for (Proceso procesoListOldProceso : procesoListOld) {
                if (!procesoListNew.contains(procesoListOldProceso)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Proceso " + procesoListOldProceso + " since its lineaproduccionFk field is not nullable.");
                }
            }
            for (Modelocalzado modelocalzadoListOldModelocalzado : modelocalzadoListOld) {
                if (!modelocalzadoListNew.contains(modelocalzadoListOldModelocalzado)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Modelocalzado " + modelocalzadoListOldModelocalzado + " since its lineaproduccionFk field is not nullable.");
                }
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            List<Desgloseproyeccionlineaproduccion> attachedDesgloseproyeccionlineaproduccionListNew = new ArrayList<Desgloseproyeccionlineaproduccion>();
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccionToAttach : desgloseproyeccionlineaproduccionListNew) {
                desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccionToAttach = em.getReference(desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccionToAttach.getClass(), desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccionToAttach.getCoddesgloselineaproduccion());
                attachedDesgloseproyeccionlineaproduccionListNew.add(desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccionToAttach);
            }
            desgloseproyeccionlineaproduccionListNew = attachedDesgloseproyeccionlineaproduccionListNew;
            lineaproduccion.setDesgloseproyeccionlineaproduccionList(desgloseproyeccionlineaproduccionListNew);
            List<Planmaestroproduccion> attachedPlanmaestroproduccionListNew = new ArrayList<Planmaestroproduccion>();
            for (Planmaestroproduccion planmaestroproduccionListNewPlanmaestroproduccionToAttach : planmaestroproduccionListNew) {
                planmaestroproduccionListNewPlanmaestroproduccionToAttach = em.getReference(planmaestroproduccionListNewPlanmaestroproduccionToAttach.getClass(), planmaestroproduccionListNewPlanmaestroproduccionToAttach.getNumeroingreso());
                attachedPlanmaestroproduccionListNew.add(planmaestroproduccionListNewPlanmaestroproduccionToAttach);
            }
            planmaestroproduccionListNew = attachedPlanmaestroproduccionListNew;
            lineaproduccion.setPlanmaestroproduccionList(planmaestroproduccionListNew);
            List<Proceso> attachedProcesoListNew = new ArrayList<Proceso>();
            for (Proceso procesoListNewProcesoToAttach : procesoListNew) {
                procesoListNewProcesoToAttach = em.getReference(procesoListNewProcesoToAttach.getClass(), procesoListNewProcesoToAttach.getCodproceso());
                attachedProcesoListNew.add(procesoListNewProcesoToAttach);
            }
            procesoListNew = attachedProcesoListNew;
            lineaproduccion.setProcesoList(procesoListNew);
            List<Modelocalzado> attachedModelocalzadoListNew = new ArrayList<Modelocalzado>();
            for (Modelocalzado modelocalzadoListNewModelocalzadoToAttach : modelocalzadoListNew) {
                modelocalzadoListNewModelocalzadoToAttach = em.getReference(modelocalzadoListNewModelocalzadoToAttach.getClass(), modelocalzadoListNewModelocalzadoToAttach.getCodestructuramateria());
                attachedModelocalzadoListNew.add(modelocalzadoListNewModelocalzadoToAttach);
            }
            modelocalzadoListNew = attachedModelocalzadoListNew;
            lineaproduccion.setModelocalzadoList(modelocalzadoListNew);
            lineaproduccion = em.merge(lineaproduccion);
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion : desgloseproyeccionlineaproduccionListNew) {
                if (!desgloseproyeccionlineaproduccionListOld.contains(desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion)) {
                    Lineaproduccion oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion = desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion.getLineaproduccionFk();
                    desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion.setLineaproduccionFk(lineaproduccion);
                    desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion = em.merge(desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion);
                    if (oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion != null && !oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion.equals(lineaproduccion)) {
                        oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion.getDesgloseproyeccionlineaproduccionList().remove(desgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion);
                        oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion = em.merge(oldLineaproduccionFkOfDesgloseproyeccionlineaproduccionListNewDesgloseproyeccionlineaproduccion);
                    }
                }
            }
            for (Planmaestroproduccion planmaestroproduccionListNewPlanmaestroproduccion : planmaestroproduccionListNew) {
                if (!planmaestroproduccionListOld.contains(planmaestroproduccionListNewPlanmaestroproduccion)) {
                    Lineaproduccion oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion = planmaestroproduccionListNewPlanmaestroproduccion.getLineaproduccionFk();
                    planmaestroproduccionListNewPlanmaestroproduccion.setLineaproduccionFk(lineaproduccion);
                    planmaestroproduccionListNewPlanmaestroproduccion = em.merge(planmaestroproduccionListNewPlanmaestroproduccion);
                    if (oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion != null && !oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion.equals(lineaproduccion)) {
                        oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion.getPlanmaestroproduccionList().remove(planmaestroproduccionListNewPlanmaestroproduccion);
                        oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion = em.merge(oldLineaproduccionFkOfPlanmaestroproduccionListNewPlanmaestroproduccion);
                    }
                }
            }
            for (Proceso procesoListNewProceso : procesoListNew) {
                if (!procesoListOld.contains(procesoListNewProceso)) {
                    Lineaproduccion oldLineaproduccionFkOfProcesoListNewProceso = procesoListNewProceso.getLineaproduccionFk();
                    procesoListNewProceso.setLineaproduccionFk(lineaproduccion);
                    procesoListNewProceso = em.merge(procesoListNewProceso);
                    if (oldLineaproduccionFkOfProcesoListNewProceso != null && !oldLineaproduccionFkOfProcesoListNewProceso.equals(lineaproduccion)) {
                        oldLineaproduccionFkOfProcesoListNewProceso.getProcesoList().remove(procesoListNewProceso);
                        oldLineaproduccionFkOfProcesoListNewProceso = em.merge(oldLineaproduccionFkOfProcesoListNewProceso);
                    }
                }
            }
            for (Modelocalzado modelocalzadoListNewModelocalzado : modelocalzadoListNew) {
                if (!modelocalzadoListOld.contains(modelocalzadoListNewModelocalzado)) {
                    Lineaproduccion oldLineaproduccionFkOfModelocalzadoListNewModelocalzado = modelocalzadoListNewModelocalzado.getLineaproduccionFk();
                    modelocalzadoListNewModelocalzado.setLineaproduccionFk(lineaproduccion);
                    modelocalzadoListNewModelocalzado = em.merge(modelocalzadoListNewModelocalzado);
                    if (oldLineaproduccionFkOfModelocalzadoListNewModelocalzado != null && !oldLineaproduccionFkOfModelocalzadoListNewModelocalzado.equals(lineaproduccion)) {
                        oldLineaproduccionFkOfModelocalzadoListNewModelocalzado.getModelocalzadoList().remove(modelocalzadoListNewModelocalzado);
                        oldLineaproduccionFkOfModelocalzadoListNewModelocalzado = em.merge(oldLineaproduccionFkOfModelocalzadoListNewModelocalzado);
                    }
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            try {
                em.getTransaction().rollback();
            } catch (Exception re) {
                throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
            }
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                String id = lineaproduccion.getNumerolineaproduccion();
                if (findLineaproduccion(id) == null) {
                    throw new NonexistentEntityException("The lineaproduccion with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(String id) throws IllegalOrphanException, NonexistentEntityException, RollbackFailureException, Exception {
        EntityManager em = null;
        try {
            
            em = getEntityManager();
            em.getTransaction().begin();
            Lineaproduccion lineaproduccion;
            try {
                lineaproduccion = em.getReference(Lineaproduccion.class, id);
                lineaproduccion.getNumerolineaproduccion();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The lineaproduccion with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            List<Desgloseproyeccionlineaproduccion> desgloseproyeccionlineaproduccionListOrphanCheck = lineaproduccion.getDesgloseproyeccionlineaproduccionList();
            for (Desgloseproyeccionlineaproduccion desgloseproyeccionlineaproduccionListOrphanCheckDesgloseproyeccionlineaproduccion : desgloseproyeccionlineaproduccionListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Lineaproduccion (" + lineaproduccion + ") cannot be destroyed since the Desgloseproyeccionlineaproduccion " + desgloseproyeccionlineaproduccionListOrphanCheckDesgloseproyeccionlineaproduccion + " in its desgloseproyeccionlineaproduccionList field has a non-nullable lineaproduccionFk field.");
            }
            List<Planmaestroproduccion> planmaestroproduccionListOrphanCheck = lineaproduccion.getPlanmaestroproduccionList();
            for (Planmaestroproduccion planmaestroproduccionListOrphanCheckPlanmaestroproduccion : planmaestroproduccionListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Lineaproduccion (" + lineaproduccion + ") cannot be destroyed since the Planmaestroproduccion " + planmaestroproduccionListOrphanCheckPlanmaestroproduccion + " in its planmaestroproduccionList field has a non-nullable lineaproduccionFk field.");
            }
            List<Proceso> procesoListOrphanCheck = lineaproduccion.getProcesoList();
            for (Proceso procesoListOrphanCheckProceso : procesoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Lineaproduccion (" + lineaproduccion + ") cannot be destroyed since the Proceso " + procesoListOrphanCheckProceso + " in its procesoList field has a non-nullable lineaproduccionFk field.");
            }
            List<Modelocalzado> modelocalzadoListOrphanCheck = lineaproduccion.getModelocalzadoList();
            for (Modelocalzado modelocalzadoListOrphanCheckModelocalzado : modelocalzadoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Lineaproduccion (" + lineaproduccion + ") cannot be destroyed since the Modelocalzado " + modelocalzadoListOrphanCheckModelocalzado + " in its modelocalzadoList field has a non-nullable lineaproduccionFk field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            em.remove(lineaproduccion);
            em.getTransaction().commit();
        } catch (Exception ex) {
            try {
                em.getTransaction().rollback();
            } catch (Exception re) {
                throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<Lineaproduccion> findLineaproduccionEntities() {
        return findLineaproduccionEntities(true, -1, -1);
    }

    public List<Lineaproduccion> findLineaproduccionEntities(int maxResults, int firstResult) {
        return findLineaproduccionEntities(false, maxResults, firstResult);
    }

    private List<Lineaproduccion> findLineaproduccionEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(Lineaproduccion.class));
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public Lineaproduccion findLineaproduccion(String id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(Lineaproduccion.class, id);
        } finally {
            em.close();
        }
    }

    public int getLineaproduccionCount() {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            Root<Lineaproduccion> rt = cq.from(Lineaproduccion.class);
            cq.select(em.getCriteriaBuilder().count(rt));
            Query q = em.createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }
    
}
